package data;

import java.util.ArrayList;

/**
 * Penampung dokumen yang di-crawl oleh crawler sebelum diproses
 * @author Muqtafi Akhmad
 */
public interface DocumentCollection {

    /**
     * Menambahkan dokumen ke dalam document collection
     * @param document dokumen
     */
    public void addDocument(Document document);

    /**
     * menambahkan array dokumen ke document collection
     * @param documents dokumen
     */
    public void addDocuments(ArrayList<Document> documents);

    /**
     * mendapatkan dokumen dari dalam koleksi, dokumen yang dikembalikan 
     * dihapus dari koleksi
     * @return dokumen
     */
    public Document getDocument();

    /**
     * mendapatkan jumlah dokumen dalam koleksi
     * @return jumlah dokumen
     */
    public Integer getDocumentCount();

    /**
     * mendapatkan keterangan apakah dokumen telah selesai dikoleksi
     * @return is all document crawled
     */
    public boolean isFinishedCollecting();

    /**
     * mengisikan nilai is all document crawled
     * @param value 
     */
    public void setIsFinishedCollecting(boolean value);

    /**
     * mengisikan token counter yang akan menempel ke koleksi dokumen
     * @param counter token counter
     */
    public void setTokenCouter(TokenCounter counter);

    /**
     * mendapatkan kembali token counter yang menempel pada dokumen
     * @return 
     */
    public TokenCounter getTokenCounter();
}
